
选址与准备
在生存模式里开一家药水店,第一步是选个好位置,靠近出生点或者主城传送点最理想,因为玩家流量决定了你的营业额,我习惯用 /setworldspawn 指令把世界出生点改到我的店铺门口,然后用 /fill 指令快速搭建一个简单的小木屋,注意不要用太贵的材料,毕竟前期要省钱买药水材料,你还需要一个空箱子作为交易点,用 /data merge block 指令把箱子的名字改成“药水商店”,这样玩家一看就知道是干什么的。
指令核心
开店卖药水最关键的是利用命令方块实现自动交易,我通常用 /give @p command_block 获得一个命令方块,把它放在箱子后面,再输入 /execute as @p at @s if block ~ ~-1 ~ chest{Items:[{id:"minecraft:glass_bottle",Count:1}]} run give @s potion{...} 这样的指令,具体来说,我会先用 /scoreboard objectives add shop dummy 创建一个计分板,然后让玩家通过投掷特定物品来触发交易,比如让玩家把玻璃瓶扔进一个漏斗,漏斗连接命令方块检测,然后给予对应的药水,比如力量药水、跳跃药水或者夜视药水,每种药水都要单独设置一个命令方块,并且用 /tag 指令区分玩家是否已经购买过,防止刷物品。
药水配方与定价
药水种类不能太杂,我推荐主卖三种基础药水,力量药水用烈焰粉和粗制药水,跳跃药水用兔子脚,夜视药水用金胡萝卜,定价方面,我用 /tellraw 指令在玩家进入时显示价格表,比如 /tellraw @a {"text":"力量药水售价5个绿宝石","color":"green"},然后用 /clear 指令扣除玩家身上的绿宝石,再通过 /give 给予药水,注意要设置数量限制,比如每个玩家每天只能买一瓶,用 /scoreboard players add @p shop 1 来记录购买次数,再用 /scoreboard players test @p shop 1 来限制,这样既公平又防止恶意囤货。
自动售卖机制
为了实现无人值守,我会把命令方块接上红石电路,再配合一个投掷器,玩家把绿宝石投进一个特定的漏斗里,漏斗触发红石比较器,激活命令方块,命令方块先检测玩家手上是否有空玻璃瓶,有的话就清空瓶子并给予对应药水,没有的话就发送一条提示信息,比如 /tellraw @p {"text":"请先准备一个空玻璃瓶","color":"red"},另外,我还会在店铺门口放一个告示牌,用 /setblock 指令设置成“点击此处交易”,实际上玩家点击告示牌后会触发一个 /playsound 音效,增加趣味性,但注意告示牌点击需要配合 /trigger 指令,这稍微复杂一点,新手可以先用漏斗加箱子组合。
防坑与优化
开店最怕熊孩子乱拆命令方块,我会用 /gamerule commandBlockOutput false 关闭命令方块输出,防止玩家看到指令内容,再用 /give @p barrier 获得屏障方块,把命令方块包裹起来,玩家无法破坏,另外,为了避免药水被复制,我会在给予药水时用 /data merge entity @p 修改药水标签,比如加上一个 unique 标签,这样同一瓶药水只能被使用一次,还有一点,药水商店的箱子要设成只读模式,用 /data merge block 把箱子的 Lock 属性设为“店主专用”,这样只有拥有对应物品的玩家才能打开,否则别人会偷走你的库存。
最后讲一下怎么给玩家权限,我一般用 /op 指令先把信任的朋友加为管理员,然后让他们用 /scoreboard 指令帮忙维护,或者用 /function 写一个简单的函数包,把整个交易流程封装进一个函数文件里,这样只需要在服务器里执行 /reload 就能生效,方便又干净,记住,药水店的核心是让玩家觉得方便和公平,所以指令要写得简洁,提示要清晰,比如在玩家交易成功时,用 /title @p title {"text":"交易成功!","color":"gold"} 显示一个金色标题,这样玩家会很高兴,下次还会再来光顾,至于药水价格,我建议根据服务器经济调整,比如绿宝石紧缺就卖便宜点,或者搞个限时打折活动,用 /schedule 指令定时执行,比如每晚八点自动降价,用 /scoreboard 临时修改价格,这样能活跃服务器气氛,你的药水店就能成为服务器里最受欢迎的打卡点。
相关文章